package com.example.seckill.Interceptor;

import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;

//@Component
//public class RoleInterceptor implements HandlerInterceptor {
//
//    @Override
//    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//        if (handler instanceof HandlerMethod) {
//            HandlerMethod handlerMethod = (HandlerMethod) handler;
//
//            RequestMapping requestMapping = handlerMethod.getMethodAnnotation(RequestMapping.class);

//            // 获取请求的URL路径和请求方法
//            String url = requestMapping != null ? requestMapping.value()[0] : "";
//            String methodStr = request.getMethod().toString();
//            String url=request.getRequestURI();
//            System.out.println("url="+url);
//            System.out.println("methods="+methodStr);
//            System.out.println("context="+context);
//
//            // 根据URL路径和请求方法获取所需的角色和权限
//            String[] requiredRoles = getRequiredRoles(url, methodStr);
//            if (requiredRoles == null || requiredRoles.length == 0) {
//                return true; // 没有权限要求，允许访问
//            }
//
//            // 获取当前用户的角色和权限信息，并进行验证
//            String currentUserRole = getCurrentUserRole(request); // 获取当前用户的角色信息，根据实际情况实现该方法
//            if (hasRequiredRoles(currentUserRole, requiredRoles)) {
//                return true; // 用户具有所需的角色和权限，允许访问
//            } else {
//                response.sendError(HttpServletResponse.SC_FORBIDDEN); // 用户不具备所需的角色和权限，拒绝访问
//                return false;
//            }
//        } else {
//            return true; // 不是通过HandlerMethod处理的请求，允许访问
//        }
//        }
//        return true;
//    }}
//    private String[] getRequiredRoles(String url, String method) {
//        // 根据URL路径和请求方法获取所需的角色和权限，返回一个字符串数组，如果不需要权限则返回null或空数组
//        // 这里可以根据具体业务逻辑实现相应的逻辑，例如从配置文件中读取权限信息等。
//        return new String[]{"ROLE_ADMIN"}; // 示例：所有管理相关请求都需要管理员角色
//    }

//    private String getCurrentUserRole(HttpServletRequest request) {
//        // 根据请求获取当前用户的角色信息，根据实际情况实现该方法。
//        // 这里可以根据用户登录状态、身份认证令牌等信息来确定用户的角色。
//        return "ROLE_ADMIN"; // 示例：当前用户具有管理员角色
//    }
//
//    private boolean hasRequiredRoles(String currentUserRole, String[] requiredRoles) {
//        // 检查当前用户是否具有所需的角色和权限，根据实际情况实现该方法。
//        // 这里可以根据实际业务逻辑来实现权限验证，例如使用Spring Security等安全框架。
//        for (String role : requiredRoles) {
//            if (currentUserRole.equals(role)) {
//                return true; // 用户具有所需的角色或权限之一，允许访问
//            }
//        }
//        return false; // 用户不具备所需的角色和权限，拒绝访问
//    }
//}